import axios from 'axios'
import store from './store'
export default {
    // 自定义插件
    install(Vue) {
        /**
         * 全局指令-表单元素自动捕获焦点
         */
        Vue.directive('fbind', {
            // 指令与元素绑定时
            bind(element, biding) {
                element.value = biding.value
            },
            // 指令所在元素被插入页面时
            inserted(element, biding) {
                element.focus()
            },
            // 指令所在的模板呗重新解析时
            update(element, biding) {
                element.value = biding.value
            }
        })

        // 拦截器相关
        // 请求拦截器
        axios.interceptors.request.use(function(config) {
            let token = store.state.token
            token = (!token) ? sessionStorage.getItem('token') : token
            if (token) {
                config.headers['Authorization'] = token
            }
            console.log('request', config)
            if(config.method =="get"){
                if(config.url.indexOf("?")==-1)
                    config.url = config.url+"?ts="+new Date().getTime()
                else
                    config.url = config.url+"&ts="+new Date().getTime()
            }
            
            return config;
        }, function(error) {
            return Promise.reject(error);
        });
        
        // 响应拦截器
        axios.interceptors.response.use(function(response) {
            console.log('response', response)
            // 设置token
            let token = response.headers['Authorization']
            if (!token) {
                token = response.headers['authorization']
            }
            if (token) {
                store.state.token = token
                sessionStorage.setItem('token', token)
            }
            return response;
        }, function(error) {
            return Promise.reject(error);
        });
    }
}